home *** CD-ROM | disk | FTP | other *** search
- Path: wuarchive!zaphod.mps.ohio-state.edu!samsung!uunet!abcfd20.larc.nasa.gov!amiga-request
- From: amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
- Newsgroups: comp.sources.amiga
- Subject: v90i276: Terminator 1.0 - virus killer, Part01/01
- Message-ID: <comp.sources.amiga:v90i276@abcfd20.larc.nasa.gov>
- Date: 11 Oct 90 00:32:40 GMT
- Reply-To: RWALLACE@vax1.tcd.ie
- Lines: 459
- Approved: tadguy@uunet.UU.NET (Tad Guy)
- X-Mail-Submissions-To: amiga@uunet.uu.net
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: RWALLACE@vax1.tcd.ie
- Posting-number: Volume 90, Issue 276
- Archive-name: util/terminator-1.0/part01
-
- [ uuencoded executable enclosed ...tad ]
-
- This is a highly effective program to defend your system against boot block
- viruses.
-
- The Terminator can be run from the CLI or Workbench. A window will come up
- with a selection of commands. Typing a number from 0 to 3 will
- protect/sterilize that floppy drive, typing Q will quit the program. The
- way The Terminator works is simple: It puts code in the boot block of the
- designated disk which causes the screen to flash red and yellow stripes for
- a fraction of a second on boot-up. The screen remains yellow for another
- couple of seconds of the boot process. If a virus infects that disk it will
- overwrite this code and the screen will no longer flash on boot-up. This
- provides warning of the virus infection.
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: Terminator.c Terminator.doc Terminator.uu Terminator0.uu
- # Terminator1.uu bootcode.a
- # Wrapped by tadguy@abcfd20 on Wed Oct 10 20:32:38 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Terminator.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Terminator.c'\"
- else
- echo shar: Extracting \"'Terminator.c'\" \(2440 characters\)
- sed "s/^X//" >'Terminator.c' <<'END_OF_FILE'
- X/*
- XThe Terminator virus killer by Russell Wallace
- XSee documentation file for details
- XCompiled with Aztec C v3.4a using precompiled INCLUDE files and 16-bit ints
- XOther module bootcode.o must be assembled with the Aztec assembler as
- Xdetailed in the file bootcode.a
- XNB - Must be linked with data/BSS in chip memory using +CDB with Aztec
- Xlinker, because trackdisk.device buffers have to be in chip memory
- X*/
- X
- Xstruct MsgPort *diskport;
- Xstruct IOStdReq *diskreq;
- Xstruct FileHandle *window;
- Xint unit; /* Disk drive 0..3 */
- Xchar buffer[2]; /* Drive number */
- Xlong code[256]; /* Buffer for boot block code */
- Xextern long bootcode[20]; /* 80 bytes of actual code in separate module */
- X
- Xmain (argc,argv)
- Xint argc;
- Xchar **argv;
- X{
- X int i;
- X for (i=0;i<20;i++)
- X code[i]=bootcode[i]; /* Copy boot code into buffer */
- X /* This is so memory after actual code will contain zeros */
- X if (!(window=Open ("CON:0/50/640/120/The Terminator v1.0",MODE_NEWFILE)))
- X exit (30);
- X print ("The Terminator virus killer by Russell Wallace 6 Feb 1989\n\
- XWARNING - DO NOT USE ON A DISK WITH A CUSTOM BOOT BLOCK!\n");
- XRETYPE:
- X print ("\
- XEnter a number from 0 to 3 to protect/sterilize that floppy drive\n\
- Xor type Q to quit: ");
- X Read (window,buffer,2L);
- X buffer[1]=0;
- X if (buffer[0]=='q' || buffer[0]=='Q')
- X {
- X Close (window);
- X return;
- X }
- X unit=buffer[0]-'0';
- X if (unit<0 || unit>3)
- X goto RETYPE;
- X print ("Installing boot code on drive ");
- X print (buffer);
- X print ("...\n");
- X
- X /* Initialize for use of trackdisk.device */
- X
- X if (!(diskport=CreatePort (0L,0L)))
- X {
- X Close (window);
- X exit (30);
- X }
- X if (!(diskreq=CreateStdIO (diskport)))
- X {
- X DeletePort (diskport);
- X Close (window);
- X exit (29);
- X }
- X if (OpenDevice (TD_NAME,(long)unit,diskreq,0L))
- X {
- X DeleteStdIO (diskreq);
- X DeletePort (diskport);
- X Close (window);
- X exit (28);
- X }
- X
- X /* Write stuff */
- X
- X diskreq->io_Length=1024;
- X diskreq->io_Data=code;
- X diskreq->io_Command=CMD_WRITE;
- X diskreq->io_Offset=0;
- X DoIO (diskreq);
- X
- X /* Force update of track buffer to disk */
- X
- X diskreq->io_Command=CMD_UPDATE;
- X DoIO (diskreq);
- X
- X /* Turn motor off */
- X
- X diskreq->io_Length=0;
- X diskreq->io_Command=TD_MOTOR;
- X DoIO (diskreq);
- X
- X /* Clean up and go back to menu */
- X
- X CloseDevice (diskreq);
- X DeleteStdIO (diskreq);
- X DeletePort (diskport);
- X goto RETYPE;
- X}
- X
- Xprint (s)
- Xchar *s;
- X{
- X Write (window,s,(long)strlen (s));
- X}
- END_OF_FILE
- if test 2440 -ne `wc -c <'Terminator.c'`; then
- echo shar: \"'Terminator.c'\" unpacked with wrong size!
- fi
- # end of 'Terminator.c'
- fi
- if test -f 'Terminator.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Terminator.doc'\"
- else
- echo shar: Extracting \"'Terminator.doc'\" \(6067 characters\)
- sed "s/^X//" >'Terminator.doc' <<'END_OF_FILE'
- XThe Terminator virus killer v1.0 (C) Copyright 1989 by Russell Wallace.
- XThis is a highly effective program to defend your system against boot block
- Xviruses. First, I'll explain how boot block viruses work. Sectors 0 and 1
- X(the first 1024 bytes) of a disk which can be inserted in response to the
- XWorkbench prompt after resetting the Amiga contain code which gets executed
- Xbefore anything else is done. This is useful for game title screens and the
- Xlike. A virus lives on the boot block. It gets loaded into memory when the
- Xmachine is booted up, and stays there until you turn the power off (most
- Xviruses can survive reset). The original SCA virus would then write a copy
- Xof itself into the boot block of any disk you used to boot the Amiga,
- Xbefore it actually booted up. Thus the virus would spread slowly
- Xthroughout your disk collection and whenever you gave a copy of an infected
- Xdisk to anyone else you would give them the virus as well. More recent
- Xviruses such as Byte Bandit, Byte Warrior etc. are far more virulent - they
- Xinfect every disk you put in the drive, not just disks you boot from.
- XUnlike the situation on the IBM and Macintosh, most Amiga viruses do no
- Xdeliberate damage but they can still accidentally crash your system. More
- Ximportantly if a program such as a game is using the boot block for
- Xsomething and the virus writes a copy of itself into the boot block, it
- Xwill destroy whatever is already there.
- X
- XThe Terminator can be run from the CLI or Workbench. A window will come up
- Xwith a selection of commands. Typing a number from 0 to 3 will
- Xprotect/sterilize that floppy drive, typing Q will quit the program. The
- Xway The Terminator works is simple: It puts code in the boot block of the
- Xdesignated disk which causes the screen to flash red and yellow stripes for
- Xa fraction of a second on boot-up. The screen remains yellow for another
- Xcouple of seconds of the boot process. If a virus infects that disk it will
- Xoverwrite this code and the screen will no longer flash on boot-up. This
- Xprovides warning of the virus infection. Eliminating the virus is slightly
- Xmore complex. The basic idea is that you have to overwrite the virus code
- Xin the boot block with something harmless - the normal method is to use the
- XAmigaDOS INSTALL command to put normal boot code in, but you can simply use
- XThe Terminator to replace the code to flash the screen on boot-up. The
- Xproblem is that while the virus is in memory, it will probably block any
- Xattempt to overwrite its code in the boot block. The solution is as
- Xfollows: Turn your Amiga off and on again to clear the virus out of memory
- X(most viruses can survive an ordinary reset). Boot up with a disk you are
- Xsure is free of infection. Write-protecting disks will prevent
- Xthem being infected, and using The Terminator on them before you
- Xwrite-protect them will provide confirmation that the disk is still clean
- Xon boot-up. Once you have rebooted with the clean disk, load up The
- XTerminator and use it on all the infected disks to kill the virus.
- X
- XSo, to summarize: Use The Terminator on all your normal bootable disks. If
- Xany of them ever stop flashing red and yellow stripes on the screen on
- Xboot-up you have a virus. At least one of the disks should be
- Xwrite-protected after using The Terminator on it to prevent it ever getting
- Xinfected. Turn the power off and on again, re-boot with a write-protected
- Xsystem disk, load up The Terminator and use it on all infected disks.
- X
- XOther virus killers such as VirusX are designed to detect specific viruses
- Xin memory. This is fine for use against those viruses but if a new one or a
- Xmutant strain of an old one is written which the virus killer does not know
- Xabout, it will be useless. The Terminator will protect against any
- Xboot block virus. It also does not consume any memory or disk space and
- Xonly adds a fraction of a second to your boot up time, because it doesn't
- Xput anything in your startup-sequence. Virus killers that look for
- Xnonstandard boot blocks can give false alarms if they see a harmless
- Xnonstandard boot block. The Terminator can't give any false alarms because
- Xanything that overwrites the flashing screen code in the boot block without
- Xyour knowledge is almost by definition a virus.
- X
- XWARNING: DO NOT USE THE TERMINATOR ON ANY DISKS WITH CUSTOM BOOT BLOCKS!
- XMost games put code in the boot block. Using The Terminator on these disks
- Xwill overwrite the boot block and destroy the game. Note that if any game
- Xis still working after being infected with the virus, it must not have had
- Xany code in the boot block otherwise the virus would have destroyed it, so
- XThe Terminator can be used to kill the virus.
- X
- XThe Terminator may be freely used, copied and distributed. The source code
- Xmay be used as a source of programming information. If you find it useful
- X(e.g. if it saves your system from virus infection), I would appreciate it
- Xif you would send a donation of about 10 pounds (US $15) to me:
- XRussell Wallace, 24 Lower Georges St, Dunlaoghaire, Co. Dublin, Ireland.
- XIn return I will send you a disk of my latest shareware/public domain
- Xprograms including the latest version of The Terminator. When distributing
- Xthis program please also distribute the source code. The reason for this is
- Xthat there are several programs around which actually infect disks under the
- Xpretense of killing viruses. The source code has to be available to prove
- Xthat the program does what it says it does.
- X
- XThe Terminator provides an almost invulnerable defense against boot block
- Xviruses - the only way anything could get past it unnoticed is if the virus
- Xitself flashed the screen red and yellow if it noticed that The Terminator
- Xwas there before it. The present version provides no protection against
- Xviruses which attach themselves to program files. Later versions hopefully
- Xwill. In order for this defense to be more effective please send me a copy
- Xof any such virus you come across - even if you get infected by a boot
- Xblock virus, please send me a copy before you wipe it out. I need viruses
- Xto test my virus killer on.
- X
- XSo long, and happy virus hunting!
- X
- END_OF_FILE
- if test 6067 -ne `wc -c <'Terminator.doc'`; then
- echo shar: \"'Terminator.doc'\" unpacked with wrong size!
- fi
- # end of 'Terminator.doc'
- fi
- if test -f 'Terminator.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Terminator.uu'\"
- else
- echo shar: Extracting \"'Terminator.uu'\" \(4652 characters\)
- sed "s/^X//" >'Terminator.uu' <<'END_OF_FILE'
- Xbegin 644 Terminator
- XM```#\P`````````#``````````(```,,0``!*0````$```/I```##$[Z`SY.'
- XM5?_^0FW__C`M__Y(P.6`0>R``C(M__Y(P>6!0^R`IB.P"``8`%)M__X,;0`40
- XM__YMUDAX`^Y(>@&Z3KH(_%!/*4"`EF8*/SP`'DZZ!VY43TAZ`<5.N@+`6$]("
- XM>@(O3KH"MEA/2'@``DAL@(PO+("63KH(X$_O``Q"+("-#"P`<8",9P@,+`!1G
- XM@(QF#B\L@)9.N@B"6$].74YU$"R`C$B`D'P`,#E`@(I*;("*;:P,;``#@(INS
- XMI$AZ`BE.N@):6$](;(",3KH"4%A/2'H"-$ZZ`D983T*G0J=.N@C04$\I0(".4
- XM9A0O+("63KH(*EA//SP`'DZZ!L943R\L@(Y.N@F66$\I0("29AXO+(".3KH),
- XM*%A/+RR`EDZZ!_Q83S\\`!U.N@:85$]"IR\L@)(P+("*2,`O`$AZ`<].N@J`J
- XM3^\`$$J`9R@O+("23KH)8%A/+RR`CDZZ".)83R\L@)9.N@>V6$\_/``<3KH&P
- XM4E1/(&R`DB%\```$```D0>R`IB)L@)(C2``H(&R`DC%\``,`'"!L@))"J``L\
- XM+RR`DDZZ";)83R!L@)(Q?``$`!PO+("23KH)GEA/(&R`DD*H`"0@;("2,7P`\
- XM"0`<+RR`DDZZ"8)83R\L@)).N@>X6$\O+("23KH(REA/+RR`CDZZ"$Q83V``A
- XM_FI#3TXZ,"\U,"\V-#`O,3(P+U1H92!497)M:6YA=&]R('8Q+C``5&AE(%1E%
- XM<FUI;F%T;W(@=FER=7,@:VEL;&5R(&)Y(%)U<W-E;&P@5V%L;&%C92`V($9EG
- XM8B`Q.3@Y"E=!4DY)3D<@+2!$3R!.3U0@55-%($].($$@1$E32R!7251(($$@A
- XM0U535$]-($)/3U0@0DQ/0TLA"@!%;G1E<B!A(&YU;6)E<B!F<F]M(#`@=&\@4
- XM,R!T;R!P<F]T96-T+W-T97)I;&EZ92!T:&%T(&9L;W!P>2!D<FEV90IO<B!TE
- XM>7!E(%$@=&\@<75I=#H@`$EN<W1A;&QI;F<@8F]O="!C;V1E(&]N(&1R:79E:
- XM(``N+BX*`'1R86-K9&ES:RYD979I8V4`3E4``"\M``A.N@2(6$](P"\`+RT`G
- XM""\L@)9.N@8R3^\`#$Y=3G5A<$/L@%9%[(!6M<EF#C(\`1-K"'0`(L)1R?_\B
- XM*4^`5BQX``0I3H!:2.>`@`@N``0!*6<02_H`"$ZN_^)@!D*G\U].<T/Z`"!.(
- XMKOYH*4"`7F8,+CP``X`'3J[_E&`$3KH`&E!/3G5D;W,N;&EB<F%R>0!)^0``C
- XM?_Y.=4Y5```O"DAY``$``#`L@%+!_``&+P!.N@=R4$\I0(!B9A1"ITAY``$`.
- XM`$ZZ!9103RYL@%9.=2!L@&)":``$(&R`8C%\``$`$")L@&(S?``!``H@;(!6'
- XM("R`5I"H``10@"E`@&8@;(!F(+Q-04Y80J=.N@=`6$\D0$JJ`*QG+B\M``PO.
- XM+0`(+PI.N@"R3^\`##E\``&`:B!L@&(`:(````0@;(!B`&B````*8$1(:@!<^
- XM3KH'D%A/2&H`7$ZZ!RI83RE`@&P@;(!L2J@`)&<0(&R`;")H`"0O$4ZZ!)18L
- XM3R\L@&PO"DZZ`EA03REL@&R`<$ZZ!(@@;(!B((!.N@28(&R`8B%```9G%DAX9
- XM`^U(>@`L3KH$=%!/(&R`8B%```PO+(!P/RR`=$ZZ^R)<3T)G3KH"U%1/)%].-
- XM74YU*@!.50``2.<,,"1M`!`@;0`(("@`K.6`*``@1"`H`!#E@"9`$!-(@$C`)
- XMT*T`#%2`.4"`=D*G,"R`=DC`+P!.N@804$\I0(!X9@A,WPPP3EU.=1`32(`_)
- XM`"!+4H@O""\L@'A.N@%$3^\`"DAZ`3H0$TB`2,#0K(!X+P!.N@%X4$\_+0`.1
- XM+PHO+(!X3KH!1$_O``I";(!T)FR`>"1+$!-(@#H`L'P`(&<8NGP`"6<2NGP`:
- XM#&<,NGP`#6<&NGP`"F8$4HM@V`P3`"!M>@P3`")F+E*+($M2BQ`02(`Z`&<>U
- XM($I2BA"%NGP`(F80#!,`(F8$4HM@!D(J__]@`F#68#@@2U*+$!!(@#H`9R:ZB
- XM?``@9R"Z?``)9QJZ?``,9Q2Z?``-9PZZ?``*9P@@2E**$(5@SB!*4HI"$$I%W
- XM9@)3BU)L@'1@`/]:0A)"IS`L@'120$C`Y8`O`$ZZ!/I03RE`@'!F"$)L@'1@:
- XM`/[D>@`F;(!X8!XP!4C`Y8`@;(!P(8L(`"\+3KH!-EA/4D!(P-?`4D6Z;(!TX
- XM;=PP!4C`Y8`@;(!P0K`(`&``_J8@`$SO`P``!"`(,B\`#&`"$-E7R?_\9P92!
- XM06`"0AA1R?_\3G4P/'__8`0P+P`,(&\`!$H89OQ32")O``A30!#95\C__&<"8
- XM0A`@+P`$3G4@;P`$(`@B;P`($-EF_$YU3E4``$CG#C`D;0`(0J=(>@".3KH$X
- XMR%!/*4"`FF8(3-\,<$Y=3G4@;0`,(F@`)"\I``1.N@3V6$\H`&=22'H`;2!$M
- XM+R@`-DZZ!,A03R9`2H!G-$AX`^TO"TZZ`>Y03RP`9R0@!N6`*@`@125H``@`Q
- XMI"5&`)Q(>`/M2'H`.$ZZ`<I03R5``*`O!$ZZ!)183R\L@)I.N@(26$]"K(":&
- XM8(!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`(&\`!"`(2AAF_)'`(`A3@$YU3E4`?
- XM`$JL@)YG!B!L@)Y.D#\M``A.N@`(5$].74YU3E7__"\$,"T`"$C`*T#__$JLX
- XM@&)G*'@`8`H_!$ZZ`-!43U)$N&R`4FWP,"R`4L'\``8O`"\L@&).N@-N4$]*Y
- XMK("B9P8@;("B3I!*K(!\9PHO+(!\3KH!<%A/2JR`@&<*+RR`@$ZZ`6!83TJLI
- XM@(1G"B\L@(1.N@%06$\L>``$""X`!`$I9Q0O#4OZ``I.KO_B*E]@!D*G\U].[
- XM<TJL@&QF,$JL@'AG*#`L@'9(P"\`+RR`>$ZZ`O103S`L@'120$C`Y8`O`"\LZ
- XM@'!.N@+>4$]@#DZZ`LHO+(!L3KH#.EA/("W__"YL@%9.=2@?3EU.=4Y5``!('
- XMYPX@."T`"#`$P?P`!B1`U>R`8DI$;0JX;(!2;`1*DF80.7P``H"(</],WP1P*
- XM3EU.=3`J``3`?(``9@@O$DZZ``Y83T*2<`!@X$[Z``(B+P`$+&R`7D[N_]PB&
- XM+P`$+&R`7D[N_X(L;(!>3N[_RD[Z``),[P`&``0L;(!>3N[_XBQL@%Y.[O_$X
- XM3OH``DSO``X`!"QL@%Y.[O_63OH``DSO``X`!"QL@%Y.[O_02.<!!$SO((``%
- XM#"QL@%I.KO^43-\@@$YU(F\`!"QL@%I.[OX^3OH``B)O``0L;(!:3N[^8DY5J
- XM``!(YP@@2'C__TZZ`-!83R@`L+S_____9@IP`$S?!!!.74YU2'D``0`!2'@`T
- XM(DZZ`6!03R1`2H!F#"\$3KH!IEA/<`!@UB5M``@`"A5M``\`"15\``0`"$(J`
- XM``X51``/0J=.N@%46$\E0``02JT`"&<*+PI.N@!:6$]@"DAJ`!1.N@%Z6$\@$
- XM"F"23E4``"\*)&T`"$JJ``IG""\*3KH!EEA/%7P`_P`()7S_____`!1P`!`J0
- XM``\O`$ZZ`2I83TAX`"(O"DZZ`0I03R1?3EU.=2)O``0L;(!:3N[^GB`O``0LT
- XM;(!:3N[^MDY5``!(>``P+RT`"$ZZ`!I03TY=3G5.50``+RT`"$ZZ`$Q83TY=)
- XM3G5.50``+PI*K0`(9@AP`"1?3EU.=4AY``$``2\M``Q.N@!@4$\D0$J`9@1PG
- XM`@%7P`!0`(-6T`#@`2)6T`"``.(`I@RDY5```O"B1M``@@"F8&)%].74YU8
- XM%7P`_P`()7S_____`!0E?/____\`&'``,"H`$B\`+PI.N@!&4$]@TD[Z``),W
- XM[P`#``0L;(!:3N[_.DCG`P`B;P`,+&R`6DZN_CA,WP#`3G5.^@`"(F\`!"QLU
- XM@%I.[O[:+&R`6D[N_WQ.^@`"(F\`!"`O``@L;(!:3N[_+B`O``0L;(!:3N[^G
- XML"!O``0L;(!:3N[^C"!O``0@B%B00J@`!"%(``A.=2!O``1,[P(!``@B+P`0Z
- XM+&R`6D[N_D0L;(!:(F\`!"`O``A.[OW8(F\`!"QL@%I.[OZ8(F\`!"QL@%I.-
- XM[OZ&(&\`!"QL@%I.[OZ`3.\#```$+&R`FD[N_Z`@;P`$+&R`FD[N_Z8@;P`$Y
- XM+&R`FD[N_[(``````^P````!`````0```[0````````#\@```^H````51$]3D
- XM`(6PE>P```-P<%`R/`#(,_P/``#?\8!1R?_V,CP`R#/\#_``W_&`4<G_]E'(8
- XM_]Y#^@`03J[_H"!`(&@`%G``3G5D;W,N;&EB<F%R>0``%``````#\@```^L`6
- X'```!```#\J[_C
- X``
- Xend
- Xsize 3292
- END_OF_FILE
- if test 4652 -ne `wc -c <'Terminator.uu'`; then
- echo shar: \"'Terminator.uu'\" unpacked with wrong size!
- fi
- # end of 'Terminator.uu'
- fi
- if test -f 'Terminator0.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Terminator0.uu'\"
- else
- echo shar: Extracting \"'Terminator0.uu'\" \(561 characters\)
- sed "s/^X//" >'Terminator0.uu' <<'END_OF_FILE'
- Xbegin 644 Terminator.doc.info
- XMXQ```0``````S``>`"@`%0`$``,``0#"AC``````````````````````````;
- XM````!`@`P>,0`````````,@````3```````````````````````H`!4``@`!;
- XM>Z@#```````````````____,```____/```____/P``X`__/\``____````XU
- XM`____``______``______``_A`#`?``______``Y`(``?``______``X``!`)
- XM?``______``______``___X`?``______``______`````````````````#_3
- XM___\``#````S``#````PP`#````P,`#'_``P#`#````__P#'_````P#``````
- XM`P#``````P#`>_\_@P#``````P#&_W__@P#``````P#'__^_@P#``````P#`8
- XM`````P#```'_@P#``````P#``````P#______P`````````````+.DUO<W0O>
- X%36]S=`#`C
- X``
- Xend
- Xsize 365
- END_OF_FILE
- if test 561 -ne `wc -c <'Terminator0.uu'`; then
- echo shar: \"'Terminator0.uu'\" unpacked with wrong size!
- fi
- # end of 'Terminator0.uu'
- fi
- if test -f 'Terminator1.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Terminator1.uu'\"
- else
- echo shar: Extracting \"'Terminator1.uu'\" \(1124 characters\)
- sed "s/^X//" >'Terminator1.uu' <<'END_OF_FILE'
- Xbegin 644 Terminator.info
- XMXQ```0``````-0`5`#H`*P`%``,``0#!XX``````````````````````````0
- XM`````[P``````````````#$````*```````````````````````Z`"H``@`!A
- XM;$@#``````````!X<````````/_````````!@P````````,&`````````_P`J
- XM```````"&`````````,P`````````<`````````!P````$````/``A``````D
- XM!Z`````````$(`P```````0($`````$`"ZP0!````B`E@D`!```"$B8""3@`&
- XM`$`0(Q"`H````($@RXH`@````OD(`@C````L@C\*``0``!$`"@D!```!`!:`=
- XM"`````````7P`````0@P``@``````"`#"``````B@('X`````!```#``````$
- XM!``#\`````(``!_X````````8!@`````@`#`,````````?_@```````#`,``;
- XM``````(!@````````_X````````&&`````````1P````````!X`````````.K
- XM`````````!L`````````/X`````````@P````````````````````#X`````X
- XM`````````````````````````?```````````````````````````````(``Q
- XM`````````````````````!```````8``````````````````````````````1
- XM`R`0`````````$``````$``"`0`````0(A````````$@`P```````O@``@@`P
- XM````@`,*`````!$```````````(```````````#P``````@``````````"``X
- XM```````````@`````!````````````````````(```'@````````````````3
- XM`````````````'^``````````````````````````````?@`````````````X
- XM`````````````````@``````````````````````````````#```````````.
- X%`````````
- X``
- Xend
- Xsize 770
- END_OF_FILE
- if test 1124 -ne `wc -c <'Terminator1.uu'`; then
- echo shar: \"'Terminator1.uu'\" unpacked with wrong size!
- fi
- # end of 'Terminator1.uu'
- fi
- if test -f 'bootcode.a' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bootcode.a'\"
- else
- echo shar: Extracting \"'bootcode.a'\" \(1048 characters\)
- sed "s/^X//" >'bootcode.a' <<'END_OF_FILE'
- X;Code for boot block to put red and yellow stripes on the screen
- X;by Russell Wallace 6 Feb 1989
- X;This code was assembled with Aztec Assembler 3.6a, linked then disassembled
- X;with DisAsm. The hex dump of the code was typed into CMon, a boot checksum
- X;was calculated and the 1K boot block was saved to a file. The first 80
- X;bytes of the file were chopped off with Cut into another file and this was
- X;then converted with my File2Manx program into an object file for linking
- X;with the Aztec linker 3.4a. An involved process but you can assemble this
- X;file then verify that the code produced is the same as the code placed in
- X;the boot block by the program.
- X
- X_LVOFindResident equ -96
- X
- X moveq #80,d0
- Xloop
- X move.w #200,d1
- Xloop1
- X move.w #$0f00,$dff180 ;Make screen red
- X dbf d1,loop1
- X move.w #200,d1
- Xloop2
- X move.w #$0ff0,$dff180 ;Make screen yellow
- X dbf d1,loop2
- X dbf d0,loop
- X
- X lea dos_name,a1 ;Do normal boot sequence
- X jsr _LVOFindResident(a6)
- X move.l d0,a0
- X move.l 22(a0),a0
- X moveq #0,d0
- X rts
- X
- Xdos_name dc.b 'dos.library',0
- X
- END_OF_FILE
- if test 1048 -ne `wc -c <'bootcode.a'`; then
- echo shar: \"'bootcode.a'\" unpacked with wrong size!
- fi
- # end of 'bootcode.a'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
- Mail comments to the moderator at <amiga-request@uunet.uu.net>.
- Post requests for sources, and general discussion to comp.sys.amiga.
-